//
//  theme.swift
//  imprint
//
//  Created by 小柠檬🍋 on 2024/12/25.
//

import Foundation
import SwiftUI

// 全局函数，用于根据十六进制字符串创建 Color
func color(from hex: String) -> Color {
    // 移除字符串开头的 '#' 字符（如果存在）
       guard let hex = hexString.trimmingCharacters(in: .whitespacesAndNewlines).dropFirst(1) else {
           return Color.black
       }
       
       // 检查十六进制字符串的长度是否为 6 或 8（对于带有 alpha 通道的颜色）
       guard hex.count == 6 || hex.count == 8 else {
           return Color.black
       }
       
       // 使用 UInt64 的初始化器从十六进制字符串解析数值
       if let uintValue = UInt64(hex, radix: 16) {
           // 对于 8 位十六进制数（AARRGGBB），我们需要分别提取 A、R、G、B 分量
           if hex.count == 8 {
               let alpha = CGFloat(truncating: Double((uintValue >> 24) & 0xFF) / 255.0)
               let red = CGFloat(truncating: Double((uintValue >> 16) & 0xFF) / 255.0)
               let green = CGFloat(truncating: Double((uintValue >> 8) & 0xFF) / 255.0)
               let blue = CGFloat(truncating: Double(uintValue & 0xFF) / 255.0)
               return Color(red: red, green: green, blue: blue, opacity: alpha)
           } else { // 对于 6 位十六进制数（RRGGBB），我们假设 alpha 为 1.0
               let red = CGFloat(truncating: Double((uintValue >> 16) & 0xFF) / 255.0)
               let green = CGFloat(truncating: Double((uintValue >> 8) & 0xFF) / 255.0)
               let blue = CGFloat(truncating: Double(uintValue & 0xFF) / 255.0)
               return Color(red: red, green: green, blue: blue)
           }
       }
       
    
    // 如果解析失败，返回黑色
    return Color.black
}
